/* 
 * IUsuarioBO.java
 * Copyright (c) Faculdade Anhanguera de Anápolis.
 * Tecnologia em Análise e Desenvolvimento de Sistemas.
 * Projeto Multidisciplinar de Autoaprendizagem.
 *
 * Este software é confidencial e propriedade da Faculdade Anhanguera de Anápolis.
 * Não é permitida sua distribuição ou divulgação do seu conteúdo sem expressa autorização da Faculdade Anhanguera de Anápolis.
 * Este arquivo contém informações proprietárias.
 */
package br.com.pma.chamatec.business;

import java.util.List;

import br.com.pma.chamatec.exception.ChamatecNegocioException;
import br.com.pma.entity.Usuario;

/**
 * Interface de negócio da entidade Usuario.
 *
 * @author Ludemeula Fernandes de Sá
 */
public interface IUsuarioBO {

	/**
	 * Salva os dados da entidade Usuario.
	 *  
	 * @param Usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario salvar(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Remove os dados da entidade Usuario.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario remover(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Lista os dados da tabela Usuario pela descrição.
	 * 
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public List<Usuario> getListDescricao() throws ChamatecNegocioException;
	
	/**
	 * Pesquisa os dados da tabela Usuario.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public List<Usuario> pesquisar(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Recupera os dados do usuário pelo login.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario recuperarPorLogin(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Recupera os dados do usuário pelo nome.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario recuperarPorNome(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Recupera os dados do usuário por login e perfil.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario recuperarPorLoginComPerfil(Usuario usuario) throws ChamatecNegocioException;

	/**
	 * Recupera Funcionario pelo CPF informado.
	 * 
	 * @param usuario
	 * @return
	 * @throws ChamatecNegocioException
	 */
	public Usuario recuperarFuncionarioPorCpf(Usuario usuario) throws ChamatecNegocioException;
}